/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.view.mbean;

import com.brain.core.common.UtilCore;
import com.brain.core.dto.EntidadDto;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.EntidadManager;
import com.brain.core.manager.RecursosManager;

import com.brain.core.view.util.ConstantesCore;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Indra
 */
@Controller("entidadMBean")
@Scope("session")
public class EntidadMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(EntidadMBean.class);
    
    @Resource
    private EntidadManager manager;
    @Resource
    private RecursosManager recursosManager;
     
    private List<EntidadDto> lista;
    private EntidadDto dto;
    private String keyTitulo = "entidad.panel";
    
    @Autowired
    private ApplicationMBean applicationMBean;
    
    @Autowired
    private SessionMBean sessionMBean;

    public EntidadMBean() {
    
        
    }
    
    public String iniciar () {
        this.lista = null;        
        return ConstantesCore.UrlNavegacion.URL_LISTA_ENTIDADES;
    }

    public String nuevo() {
        sessionMBean.setAccion(ConstantesCore.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));        
        
        this.dto = new EntidadDto();
        this.dto.setBitacora(Boolean.FALSE);
        this.dto.setCorrelativo(1L);        
        return ConstantesCore.UrlNavegacion.URL_ENTIDAD;
    }

    public String editar() {
        sessionMBean.setAccion(ConstantesCore.Formulario.EDITAR);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));        
        return ConstantesCore.UrlNavegacion.URL_ENTIDAD;
    }

    public String ver() {
        sessionMBean.setAccion(ConstantesCore.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        return ConstantesCore.UrlNavegacion.URL_ENTIDAD;
    }

    public void buscar() {
        try {
            //this.lista = this.manager.obtenerTodos();
            this.lista = this.manager.obtenerTodosPorPropietario();
        } catch (DAOException ex) {
            showError("Error de Sistema", ex.getMessage());
        }
    }

    public String guardar() {
        
        String to = null;
        String mensajeTrx = "";
        
        if (sessionMBean.getAccion() == ConstantesCore.Formulario.NUEVO) {            
            try {
                UtilCore.General.toUpperCaseDto(this.dto);
                this.manager.nuevo(this.dto);  
                to = ConstantesCore.UrlNavegacion.URL_LISTA_ENTIDADES;
            } catch (Exception ex) {          
                logger.error("ERROR DE SISTEMA", ex);
                to = null;
            }
        } if (sessionMBean.getAccion() == ConstantesCore.Formulario.EDITAR) {  
            try {
                UtilCore.General.toUpperCaseDto(this.dto);
                this.manager.editar(this.dto);                
                to = ConstantesCore.UrlNavegacion.URL_LISTA_ENTIDADES;
            } catch (Exception ex) {          
                logger.error("ERROR DE SISTEMA", ex);
                to = null;
            }
        }

        if (to == null) {
            mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.error");
            showError(mensajeTrx);
        } else {
            mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok");
            showMessage(mensajeTrx);
            
        }

        return to;
    }

    public String retroceder() {
        return ConstantesCore.UrlNavegacion.URL_LISTA_ENTIDADES;
    }

    public EntidadDto getDto() {
        return dto;
    }

    public void setDto(EntidadDto dto) {
        this.dto = dto;
    }
    
    public List<EntidadDto> getLista() {
        return lista;
    }

    public void setLista(List<EntidadDto> lista) {
        this.lista = lista;
    }

    public String getKeyTitulo() {
        return keyTitulo;
    }

    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }

    public EntidadManager getManager() {
        return manager;
    }

    public void setManager(EntidadManager manager) {
        this.manager = manager;
    }
    
    
}
